The form of modulation known as QPSK (short for “quaterny phase-shift keying”) is routinely used to transmit digital signals and represents a pair of binary digits by the phase of a sinusoidal signal relative to a reference phase.
Because a 2-digit binary number can take four values, the phases can differ by π/2 radians. For example, a signal having a phase shift of π/4 radians relative to the reference phase represents the number 00. A signal with a phase shift of 3π/4 relative to the reference phase represents the number 01, a signal with a phase shift of 5π/4 relative to the reference phase represents the number 11, and a signal with a phase shift of 7π/4 relative to the reference phase represents the number 10. This kind of correspondence between the pairs of binary digits and the phase shifts, in which only one binary digit is modified for each increment of π/2, is referred as the Gray correspondence. Other forms of correspondence are possible, for example the natural correspondence with increasing values of the numbers, in which case the succession of binary numbers is 00, 01, 10 and 11.
The receiver must know the reference phase; in other words, it must be possible to distinguish between the four phase values transmitted, for example π/4, 3π/4, 5π/4 and 7π/4 or 0, π/2, π and 3π/2. The simplest way to recover the reference phase, i.e. to resolve the phase ambiguity, is to send periodically a known symbol, i.e. a symbol consisting of bits of predetermined value. The disadvantage of this method is that it cannot correct errors due to transmission noise, which is inevitable, and a consequence of this is the appearance of phase jumps between successive transmissions of the known symbols.
Another, relatively complex, method detects decoding errors and commands phase rotations by increments of +π/4 in order to determine which is the correct phase. This requires considerable processing time, which is incompatible with real-time packet transmission, because the processing time leads to loss of data.
The method providing the best results entails assigning the transmitted data an error correcting code and correcting errors after decoding, rather than simultaneously with transmission, as in the prior art methods.
The most effective error correcting codes are product codes, which are also known as turbo codes. To form a product code, the binary digits to be transmitted are assembled into a matrix which has L rows and C columns and the rows and columns are coded in blocks; in other words, (K-C) error correcting bits (parity bits) are added to each row containing C data bits and (P-L) error correcting bits are added to each column containing L data bits. If a row is completely erroneous, its parity bits cannot be used to correct it; on the other hand, the erroneous row could be corrected by means of the parity bits in the columns, because only one bit is erroneous in each column.
However, existing turbo codes cannot be used for QPSK because phase rotations affect decoding. In other words, existing error correcting turbo codes are not transparent to phase rotations, and therefore cannot be used for QPSK transmission.